package com.obelisco.vista.componentes;

import java.util.List;
import java.util.ResourceBundle;
import java.util.Vector;

import com.obelisco.vista.plantillas.VentanaListaSimple;

import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Button;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Grid;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.layout.GridLayoutData;
import nextapp.echo2.app.layout.RowLayoutData;
import echopointng.ContainerEx;
import echopointng.ExtentEx;
import echopointng.layout.DisplayLayoutData;

public class PaneBusquedaBase extends ContainerEx { 

	private ResourceBundle resourceBundle;
	
	private ContainerEx paneSuperior;

	private ContenedorBusqueda contenedorBusqueda;
	
	private Vector<PaneBusquedaListener> listeners = new Vector<PaneBusquedaListener>();
	
	private Button btnBuscar;
	
	
	/**
	 * Creates a new <code>PaneBusqueda</code>.
	 */
	public PaneBusquedaBase() {
		super();

		// Add design-time configured components.
		initComponents();
	}

	public void inicializar() {
		contenedorBusqueda.inicializar();
	}
	
	
	private void accionBuscar(ActionEvent e) {
		// TODO Implement.
		if (contenedorBusqueda != null) {			
			List datos = contenedorBusqueda.buscar();
			distribuirResultadosBusqueda(datos);
		}
	}
	
	private ActionListener listenerBusqueda = new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			accionBuscar(e);
		}
	};

	/**
	 * Configures initial state of component. WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		ContainerEx contenedor = new ContainerEx();
		contenedor.setWidth(new ExtentEx("100%"));
		add(contenedor);
		
		Grid grid1 = new Grid();
		grid1.setSize(1);
		grid1.setWidth(new Extent(100, Extent.PERCENT));
		contenedor.add(grid1);
		
		paneSuperior = new ContainerEx();
		paneSuperior.setWidth(new ExtentEx("100%"));

		grid1.add(paneSuperior);

		Row row2 = new Row();
		GridLayoutData row2LayoutData = new GridLayoutData();
		row2LayoutData.setAlignment(new Alignment(Alignment.RIGHT, Alignment.CENTER));
		row2.setLayoutData(row2LayoutData);
		grid1.add(row2);
		btnBuscar = new Button();
		btnBuscar.setText("Buscar");
		btnBuscar.setStyleName("Obelisco.Boton.Catalogo");
		RowLayoutData btnBuscarLayoutData = new RowLayoutData();
		btnBuscarLayoutData.setAlignment(new Alignment(Alignment.RIGHT, Alignment.BOTTOM));
		btnBuscarLayoutData.setInsets(new Insets(new Extent(10,Extent.PX),new Extent(0,Extent.PX)));
		btnBuscar.setLayoutData(btnBuscarLayoutData);
		
		btnBuscar.removeActionListener(listenerBusqueda);
		btnBuscar.addActionListener(listenerBusqueda);
		row2.add(btnBuscar);
	}
	
	
	public void addPaneBusquedaListener(PaneBusquedaListener listener) {
		listeners.add(listener);
	}

	public void removePaneBusquedaListener(PaneBusquedaListener listener) {
		listeners.remove(listener);
	}
	
	public void removeAllPanelTransaccionListeners() {
		listeners.removeAllElements();
	}

	public void distribuirResultadosBusqueda(List datos) {
		for (PaneBusquedaListener l : listeners) {		
			l.resultadoBusqueda(datos);
		}
	}

	public ContenedorBusqueda getContenedorBusqueda() {
		return contenedorBusqueda;
	}

	public void setContenedorBusqueda(ContenedorBusqueda contenedorBusqueda) {
		this.contenedorBusqueda = contenedorBusqueda;
		this.contenedorBusqueda.setListenerBuscar(listenerBusqueda);
		DisplayLayoutData layoutData = new DisplayLayoutData();
		layoutData.setOutsets(new Insets(new Extent(10)));
		Alignment alineacion = new Alignment(Alignment.LEADING, Alignment.TOP);
		layoutData.setAlignment(alineacion);
		this.contenedorBusqueda.setLayoutData(layoutData);

		paneSuperior.add(this.contenedorBusqueda);
	}
	
	public void ejecutarBusquedaActual() {
		
		if (contenedorBusqueda != null) {
			List datos = contenedorBusqueda.buscar();
			distribuirResultadosBusqueda(datos);
		}

	}

	public Button getBtnBuscar() {
		return btnBuscar;
	}

	public void setBtnBuscar(Button btnBuscar) {
		this.btnBuscar = btnBuscar;
	}

}
